Day 4 做完之後,Visual Learning Lab 已經可以把一段文字分析成 Quick Summary、Key Concepts、Relationships,再把 Relationships 自動畫成 Visual Flow。
但有一個東西其實從 Day 2 就一直放在首頁,卻完全不能用。
就是 PDF 上傳。
所以 Day 5 的目標很直接:
不要再自己複製文字,讓 PDF 真的可以直接丟進 Visual Learning Lab。

這次我用 pypdf 來處理 PDF。
它會先把 PDF 裡可以讀到的文字一頁一頁抽出來,並且保留頁碼,例如:
[Page 1]
...
[Page 2]
...
[Page 3]
...
接著再把這些內容送進 Day 4 已經做好的 GPT 分析流程。
所以整個流程開始變成:
PDF
↓
pypdf 抽取文字
↓
保留頁碼
↓
GPT 分析
↓
Quick Summary / Key Concepts / Relationships
↓
Visual Flow
我目前也先限制最多分析前幾個有文字的頁面,畢竟現在還在測試階段,我還不想一開始就把一整本幾百頁的課本丟進 API。
另外這次我特別保留頁碼,是因為前幾天有人留言提醒我一個問題:如果 AI 把教材簡化錯了,但視覺化又做得很好懂,使用者反而可能更容易相信錯誤內容。
所以我之前才把 Source Check 加進 Product Vision。
Day 5 算是這個功能第一次真的有一點雛形。
第一份我拿來測的是自己上課的 Sinusoids 講義。
原本講義有二十幾頁,我先裁成 5 頁,內容包含 Sinusoids、角度與 x 軸單位、Phasors、Impedance / Admittance,還有三角恆等式。
把 PDF 上傳之後,Visual Learning Lab 第一次真的顯示:
PDF source: text found on 5 of 5 page(s); analyzed 5 page(s).
接著原本的 AI 分析也正常跑了出來。

這次最大的差別是,Key Concepts 和 Relationships 後面開始出現:
Source: p.1
Source: p.2
Source: p.4
例如 Angle and x-axis units 被標成來自第 2 頁,我回去翻原本 PDF,內容確實就在那裡。
這至少代表現在 AI 說:
「這個概念來自這裡。」
我可以真的回原文確認,而不是只能直接相信它。
Visual Flow 也一樣可以正常生成。

但這張圖馬上又暴露出一個問題。
它其實不太像 Flow。
像:
Sinusoids
↓
Phasors
Sinusoidal analysis
↓
Impedance and admittance
Sinusoid representation
↓
Angle and x-axis units
這些內容比較像「哪些概念彼此有關」,而不是第一步、第二步、第三步的流程。
更有趣的是,GPT 自己其實知道。
它的 Suggested Visualization 推薦的是:
結果 Visual Learning Lab 還是很堅持地畫了一張 Flow 給它。
所以目前 Suggested Visualization 還只是「建議」,並沒有真的控制網站要使用哪一個視覺化工具。
這也表示後面真正想做到的應該是:
AI 判斷 Flow
↓
產生 Flow
AI 判斷 Concept Map
↓
產生 Concept Map
AI 判斷 Comparison
↓
產生 Comparison
而不是什麼東西都塞進 Flow。
本來我以為今天最大的問題會是 Visual Flow 不夠漂亮,結果在看 Sinusoids 的分析時,我發現了一個更大的問題。
GPT 在 Trigonometric identities 下面寫了一句,大意是:
有提到三角恆等式,但原始內容沒有提供具體公式。
問題是我打開 PDF 一看。
公式明明就在那裡。
像:
sin(A ± B)
cos(A ± B)
sin(ωt ± 90°)
cos(ωt ± 90°)
一個都沒少。

這時候我才發現,GPT 並不是看錯了。
它是根本沒有看到。
目前我的 PDF 處理方式是:
PDF
↓
pypdf
↓
抽出文字
↓
GPT
所以 GPT 能理解多少,完全取決於 pypdf 到底成功抽出了多少文字。
如果教材裡的內容是公式物件、波形圖、座標圖、圖片,甚至是手寫註記,而 pypdf 沒有把它抽成文字,那這些東西對 GPT 來說就等於不存在。
這也是我今天第一次很明顯地發現:
「可以讀 PDF」跟「真的看懂 PDF」完全是兩回事。
為了確認不是 Sinusoids 這份教材特別奇怪,我又拿另一份工程數學的 Laplace Transform 講義進來測。
這次效果明顯好很多。
GPT 很順地抓到用 Laplace Transform 解 ODE 的主要流程:
給定的 ODE
↓
代數方程(輔助方程)
↓
變換域中的解
↓
原問題的解

這種類型的教材本來就有很明確的步驟,所以 Flow 看起來就合理很多。
它也抓到了 f(t)、F(s)、inverse Laplace transform、kernel 等概念,來源頁碼也都有正常標出來。
【圖片 6:Laplace 的 Key Concepts / Relationships,最好截得到 Source】
這次測試也更明顯地證明了一件事:
不同內容真的需要不同的視覺化。
Laplace Transform 這種「有明確步驟」的內容很適合 Flow。
Sinusoids 這種比較偏「概念彼此關聯」的內容,則比較適合 Concept Map。
也就是說,後面不能只是一直把 Graphviz Flow 做得更漂亮,而是真的要開始讓 AI 判斷:
這份教材到底應該怎麼被呈現?
這次 PDF 功能做完之後,我覺得 Source page 是目前一個滿重要的進展。
以前 GPT 整理完一份內容,我看到一個概念只能想:
「應該是對的吧?」
現在至少開始變成:
某個概念
Source: p.3
我真的可以翻回第 3 頁檢查。
但目前的 Source Check 還有一個很明顯的限制。
它只能追:
成功被抽成文字的內容。
如果資訊來自公式、圖片、電路圖、波形、圖表或手寫註記,目前的系統根本不知道它存在。
所以真正完整的 Source Check,未來應該不只是:
Source: p.3
而是能知道:
第 3 頁的哪一段?
哪一張圖?
哪一個公式?
這件事情現在當然還做不到,但至少問題已經開始變得很明確。
做到今天,目前 Visual Learning Lab 看 PDF 的能力大概是:
PDF
├─ 文字 ✓
├─ 頁碼 ✓
├─ 公式 可能會漏
├─ 圖片 看不到
├─ 圖表 看不到
└─ 手寫註記 看不到
所以 Day 5 最大的成果,反而不只是「PDF 上傳終於可以用了」。
而是我第一次真的拿自己的工程教材測下去之後發現:
如果它只能看 PDF 裡抽得出來的文字,那它其實還沒有真的在看教材。
前幾天我一直在想怎麼把 GPT 的理解轉成 Flow、Concept Map,甚至後面的 3D。
但今天才發現,在想「怎麼畫」之前,還有一個更基本的問題:
AI 到底有沒有真的看到完整的教材?
所以下一步,我想先暫停增加新的視覺化種類。
我要試著讓 Visual Learning Lab 不只是「讀 PDF 文字」,而是真的能看到 PDF 頁面裡的公式、圖片和圖表。
到那個時候,才比較有資格說它真的開始「看教材」。
GitHub Repo:
https://github.com/f24131128-lgtm/visual-learning-lab